/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CONTROLLER;

import DAO.*;
import MODEL.*;
import VIEW.ProjetoFinal;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.util.Callback;
import javax.swing.JOptionPane;

/**
 *
 * @author MatheuseJessica
 */
public class CadastroProdutoController implements Initializable {
    @FXML
    ChoiceBox cb_categoria;
    @FXML
    TableView tb_novos;
    @FXML
    TableColumn col_produto, col_quantia, col_categoria, col_valorVenda,col_valorCompra;
    @FXML
    TextField tf_nome, tf_quantia, tf_compra, tf_venda;
    
    @FXML
    private void voltarCaixa(ActionEvent event){
        ProjetoFinal.getInstance().gotoCaixa();
    }
    
    @FXML
    private void add_categoria(ActionEvent event){
        ProjetoFinal.getInstance().gotoCadastraCategoria();
    }
    
    @FXML
    private void add_Novos(ActionEvent event){
        try{
            Produtos prod = new Produtos();
            prod.setNome(tf_nome.getText());

            prod.setCategoria((Categoria)cb_categoria.getSelectionModel().getSelectedItem());

            prod.setQuantia(Integer.parseInt(tf_quantia.getText()));
            prod.setPreco_compra(Double.parseDouble(tf_compra.getText()));
            prod.setPreco_venda(Double.parseDouble(tf_venda.getText()));
            
            tb_novos.getItems().add(prod);
        }catch(Exception e){
            System.out.println("Erro ao adicionar o Produto: "+e);
        }
    }
    
    @FXML
    private void removerLista(ActionEvent event){
        if (!tb_novos.getItems().isEmpty() && !tb_novos.getSelectionModel().isEmpty()) {
            tb_novos.getItems().remove(tb_novos.getFocusModel().getFocusedItem());
        }
    }
    
    @FXML
    private void confirmar(ActionEvent event){
        try{
            if(!tb_novos.getItems().isEmpty()){
               DaoProdutos dp = new DaoProdutos();
               dp.insereProduto(tb_novos.getItems()); 
               voltarCaixa(null);
            }else{
                JOptionPane.showMessageDialog(null, "Adicione algum produto para poder confirmar.");
            }
            
        }catch(Exception e){
            System.out.println("Erro ao Confirmar: "+e);
        }
        
    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        DaoCategoria c = new DaoCategoria();
        List<Categoria> cat = c.getCategoria();
        
        col_produto.setCellValueFactory(new PropertyValueFactory<Produtos, String>("nome"));
        
        col_categoria.setCellValueFactory(new Callback<CellDataFeatures<Produtos, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<Produtos, String> p) {
                return new ReadOnlyObjectWrapper(p.getValue().getCategoria().getDescricao());
            }
        });

        col_quantia.setCellValueFactory(new PropertyValueFactory<Produtos, String>("quantia"));
        col_valorVenda.setCellValueFactory(new PropertyValueFactory<Produtos, String>("preco_venda"));
        col_valorCompra.setCellValueFactory(new PropertyValueFactory<Produtos, String>("preco_compra"));
        cb_categoria.setItems(FXCollections.observableList(cat));
    }
}
